/**
 * 
 */
package mx.unam.acatlan.poo.rps.player;

import java.util.Random;

import mx.unam.acatlan.poo.rps.RPSWorld;
import mx.unam.acatlan.poo.rps.Movement;

/**
 * Un {@link Agent} que utiliza siempre el mismo movement.
 * 
 * <p style="text-align: justify">
 * Cuando es creado, {@link ConstantAgent} elije aleatoriamente uno de los
 * tres movements permitidos en un juego PPT ({@link Movement#PIEDRA},
 * {@link Movement#PAPEL}, y {@link Movement#TIJERAS}). Posteriormente,
 * en cada juego PPT realiza siempre el movement elegido inicialmente.  
 * </p>
 * 
 * @author Carlos Alegria Galicia
 * @see RandomAgent
 * @see Random
 */
public class ConstantAgent extends Agent {

	/**
	 * El movement que realiza este jugador en todos sus encuentros
	 */
	private Movement movement;

	/**
	 * Crea un {@link Agent} con el nombre "Agent Constante"
	 * 
	 * <p style="text-align: justify">
	 * Para elegir aleatoriamente el movement que siempre realizará,
	 * utiliza {@link Random#nextInt(int)} inicializando {@link Random} con
	 * el valor {@link System#currentTimeMillis()} como semilla.
	 * </p>
	 */
	public ConstantAgent() {
		super("Constant Agent");
		this.movement = ConstantAgent.movements[new Random(
								System.currentTimeMillis()).nextInt(3)];
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * mx.unam.acatlan.poo.rps.Jugador#jugarPPT(mx.unam.acatlan.poo.rps.RPSWorld)
	 */
	@Override
	public void play(RPSWorld world) {
		world.setMovimiento(this.movement);
	}
}